package bean;

import java.sql.SQLException;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import DAO.UsuarioDAO;
import Model.Usuario;
import Utils.Uteis;

public class UsuarioControl {
	private String senha;
	private String confirmarSenha;
	private int idUsuario;
	private UIInput senhaValidation;
	
	public String getSenha() {
		return senha;
	}

	public UIInput getSenhaValidation() {
		return senhaValidation;
	}

	public void setSenhaValidation(UIInput senhaValidation) {
		this.senhaValidation = senhaValidation;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public String getConfirmarSenha() {
		return confirmarSenha;
	}


	public void setConfirmarSenha(String confirmarSenha) {
		this.confirmarSenha = confirmarSenha;
	}


	public int getIdUsuario() {
		return idUsuario;
	}


	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String SalvarNovaSenha()
	{
		try {
			if(this.senha.length() > 5)
			{	
				String senhaNova = Uteis.encripta(this.senha);
				UsuarioDAO.AlterarSenha(senhaNova, this.idUsuario);
				FacesContext facesContext = FacesContext.getCurrentInstance();
				facesContext.addMessage("sucesso", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Senha alterada com sucesso!"));	
			}
		} catch (SQLException e) {
			e.printStackTrace();
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("erro", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", "Ocorreu um problema ao salvar as informações, contate o administrador do sistema"));
		}
		return "usuario_list";
	}
	
	public String AlterarSenha()
	{
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
		Usuario currentuser = (Usuario) session.getAttribute("currentUser");		
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		int idUsuario = Integer.parseInt(request.getParameter("idusuario"));
		
		if(idUsuario == currentuser.getIdUsuario())
		{
			this.idUsuario = idUsuario; 
			return "usuario_editar_senha";			
		}
		else
		{
			FacesMessage message = new FacesMessage();
			message.setDetail("Somente esse usuario pode alterar a senha!");        
			message.setSeverity(FacesMessage.SEVERITY_WARN);	        
			return "usuario_list";
		}
	}
	
	public void validaSenhas(FacesContext context, UIComponent uicomponent, Object value)
	{
		String confirmaSenha = value.toString();
		if(confirmaSenha.length() > 5)
		{			
			String senha = this.senhaValidation.getLocalValue().toString();				
			if(! confirmaSenha.equals(senha))
			{
				((UIInput)uicomponent).setValid(false);
				FacesMessage message = new FacesMessage();
				message.setDetail("As senhas não conferem !");        
				message.setSeverity(FacesMessage.SEVERITY_ERROR);	        
				throw new ValidatorException(message);
			}		
		}
	}
	
}
